      1  import java.util.Scanner;

      2  import java.util.Stack;

      3

      4  /**

      5     This program uses a stack to check whether an expression has balanced

      6     parentheses.

      7  */

      8  public class ParenChecker

      9  {

     10     public static void main(String[] args)

     11     {

     12        Scanner in = new Scanner(System.in);

     13        System.out.print("Enter an expression with { [ ( ) ] }: ");

     14        String expression = in.nextLine();

     15

     16        Stack<Character> parens = new Stack<Character>();

     17

     18        for (int i = 0; i < expression.length(); i++)

     19        {

     20           char ch = expression.charAt(i);

     21           if (ch == '(' || ch == '[' || ch == '{')

     22           {

     23              parens.push(ch);

     24           }

     25           else if (ch == ')' || ch == ']' || ch == '}')

     26           {

     27              if (parens.size() == 0)

     28              {

     29                 System.out.println("Not balanced.");

     30                 return;

     31              }

     32              char open = parens.pop();

     33              if (!(open == '(' && ch == ')'

     34                    || open == '[' && ch == ']'

     35                    || open == '{' && ch == '}'))

     36              {

     37                 System.out.println("Not balanced.");

     38                 return;

     39              }

     40           }

     41        }

     42        if (parens.size() == 0)

     43        {

     44           System.out.print("Balanced.");

     45        }

     46        else

     47        {

     48           System.out.print("Not balanced.");

     49        }

     50     }

     51  }